// -*- C++ -*-
-// $Id: format.cpp,v 1.2 2009/11/02 20:38:02 robertl Exp $
+// $Id: format.cpp,v 1.3 2010/01/17 01:42:10 robertl Exp $
//------------------------------------------------------------------------
//
// Copyright (C) 2009 S. Khai Mong <khai@mangrai.com>.
//
//------------------------------------------------------------------------
#include "format.h"
+#include "mainwindow.h"
QString Format::htmlBase = QString();
{
saveOptions(settings, name+".input", inputOptions);
saveOptions(settings, name+".output", outputOptions);
+ // TODO: Finish this; let's not corrupt the .plsts until we can start from zero.
+ if (getReadUseCount() || getWriteUseCount()) {
+ settings.setValue(name + ".readcount", getReadUseCount());
+ settings.setValue(name + ".writecount", getWriteUseCount());
+ }
}
void Format::restoreSettings(QSettings &settings)
{
restoreOptions(settings, name+".input", inputOptions);
restoreOptions(settings, name+".output", outputOptions);
+ bumpReadUseCount(settings.value(name + ".readcount").toInt());
+ bumpWriteUseCount(settings.value(name + ".writecount").toInt());
}
void Format::setToDefault()
outputOptions[i].setSelected(false);
outputOptions[i].setValue(QVariant());
}
-}
+}
\ No newline at end of file
// -*- C++ -*-
-// $Id: format.h,v 1.2 2009/11/02 20:38:02 robertl Exp $
+// $Id: format.h,v 1.3 2010/01/17 01:42:10 robertl Exp $
//------------------------------------------------------------------------
//
// Copyright (C) 2009 S. Khai Mong <khai@mangrai.com>.
fileFormat(false),
deviceFormat(false),
extensions(QStringList()),
- html(QString())
+ html(QString()),
+ readUseCount_(0),
+ writeUseCount_(0)
{
inputOptions.clear();
outputOptions.clear();
extensions(extensions),
inputOptions(inputOptions),
outputOptions(outputptions),
- html(QString())
+ html(QString()),
+ readUseCount_(0),
+ writeUseCount_(0)
+
{
}
extensions(c.extensions),
inputOptions(c.inputOptions),
outputOptions(c.outputOptions),
- html(c.html)
+ html(c.html),
+ readUseCount_(0),
+ writeUseCount_(0)
+
{
}
void setToDefault();
static QString getHtmlBase() { return htmlBase; }
static void setHtmlBase(const QString &s) { htmlBase = s; }
-
+
+ void bumpReadUseCount(int v) { readUseCount_ += v; }
+ void bumpWriteUseCount(int v) { writeUseCount_ += v; }
+ int getReadUseCount() const { return readUseCount_; }
+ int getWriteUseCount() const { return writeUseCount_; }
+ void zeroUseCounts(void);
+
private:
QString name, description;
bool readWaypoints, readTracks, readRoutes;
QList<FormatOption>outputOptions;
QString html;
static QString htmlBase;
+ int readUseCount_;
+ int writeUseCount_;
};
// -*- C++ -*-
-// $Id: mainwindow.cpp,v 1.12 2009/11/02 20:38:02 robertl Exp $
+// $Id: mainwindow.cpp,v 1.13 2010/01/17 01:42:10 robertl Exp $
//------------------------------------------------------------------------
//
// Copyright (C) 2009 S. Khai Mong <khai@mangrai.com>.
//--- Restore from registry
restoreSettings();
upgrade = new UpgradeCheck();
- upgrade->checkForUpgrade(babelVersion, bd.upgradeCheckMethod, bd.upgradeCheckTime, bd.installationUuid);
+ upgrade->checkForUpgrade(babelVersion, bd.upgradeCheckMethod,
+ bd.upgradeCheckTime, bd.installationUuid,
+ formatList);
}
//------------------------------------------------------------------------
args << (formatList[fidx].getName() + MakeOptions(formatList[fidx].getInputOptions()));
// Input file(s) or device
+ int read_use_count = 0;
if (bd.inputType == BabelData::fileType) {
- for (int i=0; i<bd.inputFileNames.size(); i++)
+ for (int i=0; i<bd.inputFileNames.size(); i++) {
args << "-f" << bd.inputFileNames[i];
+ read_use_count++;
+ }
}
else {
args << "-f" << bd.inputDeviceName;
+ read_use_count++;
}
+ formatList[fidx].bumpReadUseCount(read_use_count);
// --- Filters!
args << filterData.getAllFilterStrings();
// output file or device option
if (outIsFile) {
if (bd.outputFileName != "")
- args << "-F" << bd.outputFileName;
+ args << "-F" << bd.outputFileName;
}
else if (bd.outputType == BabelData::deviceType) {
args << "-F" << bd.outputDeviceName;
}
+ // GUI only ever writes a single file at a time.
+ formatList[fidx].bumpWriteUseCount(1);
}
// Now output for preview in google maps
-; $Id: setup.iss,v 1.11 2009/11/02 20:38:02 robertl Exp $\r
+; $Id: setup.iss,v 1.12 2010/01/17 01:42:10 robertl Exp $\r
;\r
; NOTE: setup.iss is generated from setup.iss.in via autoconf.\r
; The generated setup.iss is checked in to help keep the version numbers\r
// -*- C++ -*-
-// $Id: upgrade.cpp,v 1.17 2009/09/14 14:20:39 robertl Exp $
+// $Id: upgrade.cpp,v 1.18 2010/01/17 01:42:10 robertl Exp $
/*
Copyright (C) 2009 Robert Lipe, robertlipe@gpsbabel.org
#include "upgrade.h"
+#include "format.h"
#include "../config.h"
#include "../gbversion.h"
UpgradeCheck::updateStatus UpgradeCheck::checkForUpgrade(const QString ¤tVersionIn,
int checkMethod,
const QDateTime &lastCheckTime,
- const QString &installationUuid)
+ const QString &installationUuid,
+ QList<Format> &formatList)
{
this->currentVersion = currentVersionIn;
this->currentVersion.remove("GPSBabel Version ");
this->upgradeCheckMethod = checkMethod;
+ this->formatList = &formatList;
QDateTime soonestCheckTime = lastCheckTime.addDays(1);
if (!testing && QDateTime::currentDateTime() < soonestCheckTime) {
this, SLOT(readResponseHeader(const QHttpResponseHeader &)));
QHttpRequestHeader header("POST", "/upgrade_check.html");
- header.setValue("Host", "www.gpsbabel.org");
+
+ const QString host("www.gpsbabel.org" );
+ header.setValue("Host", host);
+
header.setContentType("application/x-www-form-urlencoded");
- header.setValue("Host", "www.gpsbabel.org");
QLocale locale;
QString args = "current_version=" + currentVersion;
args += "&beta_ok=1"; // Eventually to come from prefs.
args += "&lang=" + QLocale::languageToString(locale.language());
- http->setHost("www.gpsbabel.org");
+ int j = 0;
+ for (int i = 0; i < formatList.size(); i++) {
+ int rc = formatList[i].getReadUseCount();
+ int wc = formatList[i].getWriteUseCount();
+ QString formatName = formatList[i].getName();
+ if (rc)
+ args += QString("&uc%1=rd/%2/%3").arg(j++).arg(formatName).arg(rc);
+ if (wc)
+ args += QString("&uc%1=wr/%2/%3").arg(j++).arg(formatName).arg(wc);
+ }
+ if (j)
+ args += QString("&uc=%1").arg(j);
+
+ http->setHost(host, 80);
httpRequestId = http->request(header, args.toUtf8());
return UpgradeCheck::updateUnknown;
if (testing)
currentVersion = "1.3.1"; // for testing
- bool allowBeta = false; // TODO: come from prefs or current version...
+ bool allowBeta = true; // TODO: come from prefs or current version...
QDomNodeList upgrades = document.elementsByTagName("update");
QUrl downloadUrl;
}
bool updateIsBeta = upgrade.attribute("type") == "beta";
bool updateIsMajor = upgrade.attribute("type") == "major";
- bool updateCandidate = updateIsMajor || (updateIsBeta && allowBeta);
- upgradeText = upgrade.firstChildElement("overview").text();
+ bool updateIsMinor = upgrade.attribute("type") == "minor";
+ bool updateCandidate = updateIsMajor || updateIsMinor || (updateIsBeta && allowBeta);
+ upgradeText = upgrade.firstChildElement("overview").text();
// String compare, not a numeric one. Server will return "best first".
if((updateVersion > currentVersion) && updateCandidate) {
response = tr("A new version of GPSBabel is available.<br />"
*/
-
+#include "format.h"
#include <QDialog>
#include <QDateTime>
#include <QHttp>
UpgradeCheck::updateStatus checkForUpgrade(const QString &babelVersion,
int upgradeCheckMethod,
const QDateTime &lastCheckTime,
- const QString &installationUuid);
+ const QString &installationUuid,
+ QList<Format> &formatList
+
+ );
QDateTime getUpgradeWarningTime() {
return upgradeWarningTime;
}
QDateTime upgradeWarningTime; // invalid time if this object never issued.
QString getOsName(void);
QString getOsVersion(void);
-
+ QList<Format> *formatList;
private slots:
void httpRequestFinished(int requestId, bool error);
-
-// void httpStateChanged(int state);
void readResponseHeader(const QHttpResponseHeader &responseHeader);